Integrating different software applications can be difficult. Even when such applications are designed to fit together, creating an integrated solution often involves a significant effort in terms of configuration, fine tuning, and resolving deployment conflicts. If the original applications were designed in isolation and not originally intended to provide an integrated solution, the integration can use hundreds of hours of time from experienced programmers.
Despite the difficulty, integration of disparate software applications is often needed. The need can arise due to the adoption of updated computers or operating systems, the transition of business processes to the internet, or through mergers and acquisitions of companies using proprietary software.
For example, Company A may merge with Company B. Each company may have its own proprietary software for purchasing materials. When the two companies merge, purchasing agents may have to run two different purchasing programs, entering duplicate data on each screen. The cost of merging the two programs, and the length of time needed to do so, can often cause delays before an application integration can take place. This can create substantial inefficiencies in the operation of the merged companies.
Integration has typically been accomplished using middleware technologies. Middleware solutions use an application integrator to go deep into the original applications' source code and to write wrappers that integrate the original application into the new technology. In order to do this, the application integrator typically has to become intimately familiar with the source code. This can be extremely difficult for software code that has not been properly documented or for software written in archaic languages.